<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <title>计算姓名</title>
</head>

<body>
    <div id="root">
        姓：<input type="text" v-model="firstname"><br><br>
        名：<input type="text" v-model="lastname"><br><br>
        姓名：<span>{{fullname}}</span>
    </div>

    <script>
        const vm = new Vue({
            el: "#root",
            // data 中数据的称为属性  红色的 data为属性名
            data: {
                firstname: "张",
                lastname: "三"
            },
            // 计算属性  用已有的属性去加工成为新的属性
            computed: {
                // 不能使用箭头函数
                fullname: {
                    // get 初次读取fullname调用   所依赖的数据发生变化时调用
                    get() {
                        return this.firstname + "-" + this.lastname
                    },
                    // set fullname被修改调用 非必须
                    set(value) {
                        const arr = value.split("-")
                        this.firstname = arr[0]
                        this.lastname = arr[1]
                        return value
                    }
                },
                // 简写形式
                fullname() {
                    // 延时一秒  无法完成异步任务
                    return this.firstname + "-" + this.lastname
                }
            }

        })


    </script>

</body>

</html>